package com.his.modules.business.dao;

import com.his.modules.business.entity.*;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface MedicalRecordMapper {
    /**
     * 获取门诊病历列表
     * @return
     */
    List<MedicalRecord> mzMedicalRecordList(MedicalRecord medicalRecord);

    /**
     * Mrr版解析
     * @param medicalRecord
     * @return
     */
    List<MedicalRecord> mzMedicalRecordListMrr(MedicalRecord medicalRecord);

    /**
     * Mrr版解析(单病历)
     * @param medicalRecord
     * @return
     */
    MedicalRecord mzMedicalRecordInfoMrr(MedicalRecord medicalRecord);

    /**
     * 获取门诊病历列表
     * @return
     */
    List<MedicalRecord> mzMrdList(MedicalRecord medicalRecord);
    /**
     * 获取住院病历列表
     * @return
     */
    List<MedicalRecord> zyMedicalRecordList(MedicalRecord medicalRecord);

    /**
     * Mrr版解析
     * @param medicalRecord
     * @return
     */
    List<MedicalRecord> zyMedicalRecordListMrr(MedicalRecord medicalRecord);

    /**
     * Mrr版解析(单病历)
     * @param medicalRecord
     * @return
     */
    MedicalRecord zyMedicalRecordInfoMrr(MedicalRecord medicalRecord);

    /**
     * 获取住院病历列表
     * @return
     */
    List<MedicalRecord> zyMrdList(MedicalRecord medicalRecord);

    /**
     * 根据病历编号及病历分类删除解析记录
     * @param medicalRecordAnalysis
     */
    void deleteMedicalRecordAnalysis(MedicalRecordAnalysis medicalRecordAnalysis);

    /**
     * 根据就诊类型及病历编号删除解析记录
     * @param mrrJxjl
     */
    void deleteMedicalRecordAnalysisMrrJxjl(MrrJxjl mrrJxjl);

    /**
     * 根据病历编号删除解析记录（门诊）
     * @param medicalRecordAnalysis
     */
    void deleteMedicalRecordAnalysisRecordMz(MedicalRecordAnalysis medicalRecordAnalysis);

    /**
     * 根据病历编号删除解析记录（住院）
     * @param medicalRecordAnalysis
     */
    void deleteMedicalRecordAnalysisRecordZy(MedicalRecordAnalysis medicalRecordAnalysis);

    /**
     * 根据病历编号删除解析记录（段落）
     * @param medicalRecordAnalysis
     */
    void deleteMedicalRecordAnalysisRecordBldl(MedicalRecordAnalysis medicalRecordAnalysis);

    /**
     * 根据病历编号删除解析记录（元素）
     * @param medicalRecordAnalysis
     */
    void deleteMedicalRecordAnalysisRecordBlys(MedicalRecordAnalysis medicalRecordAnalysis);

    /**
     * 保存解析记录
     * @param medicalRecordAnalysis
     */
    void saveMedicalRecordAnalysis(MedicalRecordAnalysis medicalRecordAnalysis);

    /**
     * 解析记录
     * @param mrrJxjl
     */
    void saveMedicalRecordAnalysisMrrJxjl(MrrJxjl mrrJxjl);

    /**
     * 保存解析记录（门诊）
     * @param medicalRecordAnalysisRecord
     */
    void saveMedicalRecordAnalysisRecordMz(MedicalRecordAnalysisRecord medicalRecordAnalysisRecord);

    /**
     * 保存解析记录（住院）
     * @param medicalRecordAnalysisRecord
     */
    void saveMedicalRecordAnalysisRecordZy(MedicalRecordAnalysisRecord medicalRecordAnalysisRecord);

    /**
     * 保存解析记录（段落）
     * @param medicalRecordAnalysisRecord
     */
    void saveMedicalRecordAnalysisRecordMrrBldl(MedicalRecordAnalysisRecord medicalRecordAnalysisRecord);

    /**
     * 保存解析记录（元素）
     * @param medicalRecordAnalysisRecord
     */
    void saveMedicalRecordAnalysisRecordMrrBlys(MedicalRecordAnalysisRecord medicalRecordAnalysisRecord);

    Integer mrrMbysCount(MrrMbys mrrMbys);
    void saveMrrMbys(MrrMbys mrrMbys);
}